package 剑指offer.字符串;

import java.util.HashMap;
/*
在一个字符串(0<=字符串长度<=10000，全部由字母组成)中找到第一个只出现一次的字符,
并返回它的位置,
如果没有则返回 -1（需要区分大小写）.
 */
public class 第50题第一个只出现一次的字符 {

    /*
    注意到题目问的是字符，而在hashmap中a的哈希结果存储在数组里面的位置一定在b的前面
    所以。。
    暴力法：HashMap 统计频率即可
     */
    public static int FirstNotRepeatingChar(String str) {
        if (str == null || str.length() == 0)
            return -1;
        char[] chars = str.toCharArray();
        HashMap<Character, Integer> hashMap = new HashMap<>();
        for (int i = 0; i < chars.length; i++) {
            if (hashMap.get(chars[i]) == null) {
                hashMap.put(chars[i], 1);
            } else {
                hashMap.put(chars[i], hashMap.get(chars[i]) + 1);
            }
        }
        for (int i = 0; i < chars.length; i++) {
            if (hashMap.get(chars[i]) == 1)
                return i;
        }
        return 0;
    }

    public static void main(String[] args) {
        System.out.println(FirstNotRepeatingChar("google"));
    }
}
